package org.ne.springboot.pojo;

import com.alibaba.fastjson.JSON;

import java.util.HashMap;
import java.util.Map;

/**
 * @author luolinila
 * @date 2025/9/25 11:00
 */
public class ImagePromptProcessor {
    HashMap<String, String> map = new  HashMap<>();

    public ImagePromptProcessor() {
        String s = """
                图片标题为{{imageTitle}}，判断图片与标题是否相符。输出格式要求: {{format}}
                严格遵守以下规则：
                1. 直接输出JSON，不要添加任何前缀或后缀。
                2. 不要解释分析过程，仅返回结构化数据。
                3. 如果文本无错误，所有字段需完整填充。
                4. 确保JSON格式完全正确（包括引号、括号匹配）。
                """;

        map.put("default", s);
    }

    public HashMap<String, String> buildPrompt(String templateName, String imageUrl, HashMap<String, String> content, Map<String, Object> formatConfig) {
        String template = map.getOrDefault(templateName, map.get("default"));

        String formatStr = buildFormatString(formatConfig);
        template = template.replace("{{format}}", formatStr);

        for (String s : content.keySet()) {
            template = template.replace("{{" + s + "}}", content.get(s));
        }

        HashMap<String, String> res = new HashMap<>();
        res.put("image", imageUrl);
        res.put("input", template);
        return res;
    }

    private String buildFormatString(Map<String, Object> formatConfig) {
        // 默认格式
        if (formatConfig.isEmpty()) {
            return "{" +
                    "{\"是否相符\": \"是或否\"," +
                    "\"原因\": \"...\"," +
                    "\"修改建议\": \"...\"}" +
                    "}";
        }

        // 根据配置动态生成格式
        try {
            return JSON.toJSONString(formatConfig);
        } catch (Exception e) {
            return "{\"error\": \"格式配置不正确\"}";
        }
    }
}
